<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>symbol数据类型</title>
</head>
<body>
    
</body>
<script>
    //symbol创建一个唯一的类似字符类型的类型，是新增的数据类型，目前包括symbol一共7种数据类型。
    //创建symbol
    let s1 = Symbol();
    let s2 = Symbol('hello world');
    let s3 = Symbol.for('hello world');
    
    //特性不能进行运算只能用于比较
    console.log(s2+100);//报错

    //基本数据类型总结
    //USONB   you are so niubility
    // U undefined 
    // S string symbol 
    // O object
    // N null number
    // B boolean


    //实战练习
    //实战1
    let game ={
        up :function() {
            console.log('game的 up');
        },
        down :function() {
            console.log('game的 down');
        },
        name :"俄罗斯方块"
    }

    //声明一个对象 并覆盖作为game的方法。（game的方法和属性是不可见的）
    let method = {
        up:Symbol(),
        down:Symbol()
    };

    game[method.up] = function(){
        console.log("外部的方法 up");
    };
    game[method.down] = function(){
        console.log("外部的方法 down");
    }

    //实战2 给对象添加唯一方法
    let youxi = {
        name:`狼人杀`,
        [Symbol('say')]:function(){
            console.log(`我能够发言`);
        },
        [Symbol(`du`)]:function(){
            console.log(`毒药`);
        }
    }
    console.log(youxi);

</script>
</html>